home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1998 June / SGI Freeware 1998 June.iso / dist / fw_ATxgopher.idb / usr / freeware / src / xgopher.1.3 / sc_tn3270.c.z / sc_tn3270.c
C/C++ Source or Header  |  1998-01-21  |  3KB  |  118 lines

  1. /* sc_tn3270.c
  2.    gopher item subclass procedures for tn3270 sessions */
  3.  
  4.      /*---------------------------------------------------------------*/
  5.      /* Xgopher        version 1.3     08 April 1993                  */
  6.      /*                version 1.2     20 November 1992               */
  7.      /*                version 1.1     20 April 1992                  */
  8.      /*                version 1.0     04 March 1992                  */
  9.      /* X window system client for the University of Minnesota        */
  10.      /*                                Internet Gopher System.        */
  11.      /* Allan Tuchman, University of Illinois at Urbana-Champaign     */
  12.      /*                Computing and Communications Services Office   */
  13.      /* Copyright 1992, 1993 by                                       */
  14.      /*           the Board of Trustees of the University of Illinois */
  15.      /* Permission is granted to freely copy and redistribute this    */
  16.      /* software with the copyright notice intact.                    */
  17.      /*---------------------------------------------------------------*/
  18.  
  19. #include "conf.h"
  20. #include "globals.h"
  21. #include "gopher.h"
  22. #include "appres.h"
  23. #include "util.h"
  24. #include "status.h"
  25. #include "subst.h"
  26. #include "sc_tn3270.h"
  27. #include "sc_tn3270P.h"
  28.  
  29.  
  30.  
  31.  
  32. /* giveTn3270Session
  33.    provide an Xterm session running a tn3270 (or x3270) command */
  34.  
  35. static BOOLEAN
  36. giveTn3270Session(gi)
  37. gopherItemP    gi;
  38. {
  39.     char    *tn3270Cmd;    
  40.     char    message[MESSAGE_STRING_LEN];
  41.  
  42.  
  43.     if ((int) strlen ( appResources->tn3270Command ) <= 0 ) {
  44.         showError("Cannot execute the tn3270 command");
  45.         return FALSE;
  46.     }
  47.  
  48.     if (gi->host == NULL || (int) strlen ( gi->host ) <= 0 ) {
  49.         showError("There is no host to telnet (tn3270) to.");
  50.         return FALSE;
  51.     }
  52.  
  53.     tn3270Cmd = editCommand(gi, appResources->tn3270Command,
  54.                 (char *) NULL, (char *) NULL);
  55.  
  56.     showStatus("starting a tn3270 session window", STAT_TEMP_MESSAGE,
  57.             gi->host, gi->port);
  58.     
  59.     system(tn3270Cmd);
  60.     free (tn3270Cmd);
  61.  
  62.     if ((int) strlen(vStringValue(&(gi->selector))) > 0) {
  63.         sprintf(message,
  64.         "If a login name is required, try:\n\'%s\'",
  65.         vStringValue(&(gi->selector)));
  66.         showInfo(message);
  67.     }
  68.  
  69.     return TRUE;
  70. }
  71.  
  72.  
  73. /* GITn3270_init
  74.    initialize tn3270 session class - prefix string */
  75.  
  76. void
  77. GITn3270_init()
  78. {
  79.     GU_makePrefix(prefixTn3270,  appResources->prefixTn3270);
  80.     GU_registerNewType(A_TN3270, &tn3270Subclass);
  81.  
  82.     return;
  83. }
  84.  
  85.  
  86. /* GITn3270_access
  87.    check the accessability of a tn3270 session item */
  88.  
  89. BOOLEAN
  90. GITn3270_access(gi)
  91. gopherItemP    gi;
  92. {
  93.     BOOLEAN    result;
  94.  
  95.     if (appResources->allowTn3270) { 
  96.         result = TRUE;
  97.     }else {
  98.         result = FALSE;
  99.     }
  100.  
  101.     return result;
  102. }
  103.  
  104.  
  105. /* GITn3270_process
  106.    process a tn3270 session selection. */
  107.  
  108. BOOLEAN
  109. GITn3270_process(gi)
  110. gopherItemP    gi;
  111. {
  112.     BOOLEAN    result;
  113.  
  114.     result = giveTn3270Session(gi);
  115.  
  116.     return result;
  117. }
  118.